Computers often are programmed to automate or semi-automate a task that traditionally has been performed by one or more persons. Such tasks may include filling out an electronic form, installing an application, electronic registration, defining objects, shopping on-line, on-line banking, preparing tax forms, and the like. Such automation or semi-automation typically provides the benefit of saving time and cost in performing the task, particularly if the task is to be performed repetitively, and often increases the accuracy in performing the task. These benefits may increase as the complexity of the task being performed increases, e.g., as the number of actions to be performed to complete the task increases. As used herein, a “task action” is an action performed in the process of performing a task. For example, to perform the task of installing software on a computer, entering a registration number may be a task action. An application configured to perform a task in a semi-automated fashion typically requires user input such as the selection or entering of information. For example, several applications exist for performing the task of installing an application on a computer or preparing tax forms for the government.
Although programming a computer to perform a task has several benefits, as the complexity of the task increases, entering the information for the task may grow more confusing to the user, possibly to the point of overwhelming the user. For example, an application to perform a relatively complicated task may be presented in a single continuous form on a computer screen. This form may require the user to scroll down through several pages, each page including several fields for which information must be selected or entered by the user. Such a form may provide no guidance or minimal guidance to the user as to which fields are related to one another, or in what order information should be entered for the fields. Thus, such an application may provide no navigational assistance to the user for performing the task beyond presenting the fields for which information must be entered or selected. This lack of guidance and/or navigational assistance makes performing tasks, particularly complex tasks, difficult for a user.
Accordingly, to make performing such tasks easier, wizards often are employed. As used herein, a “wizard” is a computer-implemented application that assists a user in performing a task by dividing the task into a plurality of sub-tasks, each sub-task including one or more task actions, and assisting the user in navigating through the sub-tasks on a computer. It should be appreciated that each sub-task may include one or more sub-tasks, which each may include one or more sub-tasks, etc. As used herein, “plurality” means two or more.
Wizards are ubiquitous in the computer and software industry. Wizards may be stand-alone applications, for example, an application installation program, or may be embedded within or invoked from within other applications. For example, Microsoft Word includes a letter wizard to assist a user in writing a letter. A wizard typically assists a user in navigating through the sub-tasks of the task by visually presenting each sub-task to the user one after another, for example, in an area of a graphical user interface (GUI). As used herein, the term “serially” means one after another (i.e., not concurrently), such that serially presenting sub-tasks means presenting sub-tasks one after another. As used herein, a “graphical user interface” or “GUI” is a user interface on which information is displayed graphically. As used herein, a “display panel” or “panel” of a GUI is an area within a GUI.
A panel may take any of a variety of forms, including, but not limited to, a window or a menu. A user can enter or select information for the one or more task actions of a sub-task displayed in a panel. It should be appreciated that entering information in a panel may include a user actually entering (e.g., typing) information and may include a user selecting information (e.g., selecting from among enumerated values, selecting a radio button, selecting or not selecting a check box). A panel may enable a user to enter information for a task action, for example, by enabling the user to enter information into a displayed field or by enabling the user to select from a list of information (e.g., by clicking a mouse on a certain location within the panel or within a menu generated by the panel). A “list” of items may include one or more of such items.
Typically, the one or more task actions of a sub-task are related in some way. For example, for a wizard for writing a letter, a first sub-task may include one or more task actions for entering sender information (e.g., a task action for entering the name of the sender and a task action for entering the title of the sender), and a second sub-task may include one or more task actions for entering information about the recipient (e.g., a task action for entering the name of the recipient and a task action for entering the address of the recipient).
Serially presenting sub-tasks of a task to a user on a computer display has several advantages. One advantage is that serial presentation may improve physical navigation through a task. For example, if the task is a relatively large task (i.e., involving many sub-tasks, and/or requiring the presentation and/or entering of significant amounts of information, for example, for task actions of a sub-task), presenting the entire task to the user on a computer screen concurrently or presenting the entire task on a single, continuous form that may span more than one computer screen (i.e., require scrolling) may be confusing to the user and difficult to physically navigate. Serially presenting sub-tasks included in the task may alleviate this problem.
Another advantage is that such serial presentation may improve cognitive navigation by the user, by dividing the task into two or more sub-tasks that each include one or more related task actions. Such a division may improve a user's understanding of each serially presented sub-task, thereby making the entering of information of the sub-task more intuitive for the user.
Yet another advantage is that for each serially presented sub-task, the validity of the information that has been entered for the sub-task may be verified before proceeding to a next sub-task. For example, a wizard for purchasing an item through a web page (e.g., www.amazon.com) may include a panel for the sub-task of entering credit card information. The information entered in this panel may be validated before continuing to a next panel. Without such capability, a user may spend significant time entering information for a plurality of sub-tasks, only to find out at the end of the task that the information entered for a sub-task near the beginning of the task is invalid, such that entering information for all of the other sub-tasks was a waste of time. Further, if the information entered for all of the sub-tasks is not validated until the end of the task, a user may have to wait a significant amount of time for the information to be validated. In response, the user may lose patience and terminate the task or take other action harmful to the proper completion of the task (e.g., hit keys randomly or click a mouse randomly).
Another advantage of serially presenting sub-tasks to a user is that the user has a chance to review and confirm the information (e.g., by clicking on a button labeled ‘OK’ or ‘NEXT’) that he or she entered for a given sub-task before advancing to a next sub-task. Reviewing and confirming the information entered for each sub-task individually typically is desirable over reviewing and confirming all of the information entered for an entire task together. Reviewing and confirming information for each sub-task individually reduces the likelihood of a user inadvertently skipping information, or losing track of his/her location within the information, or intentionally skipping information as a result of losing patience or focus due to the tediousness of reviewing all of the entered information together.
There are a variety of types of wizards. One type of wizard is a linear wizard, which serially presents sub-tasks to a user in a predefined order, where the sub-tasks must be performed in the order of presentation. Installation wizards often are linear wizards. A linear wizard may be unidirectional in that the wizard does not allow the user to access a previously performed sub-task by proceeding through previously performed sub-tasks in the reverse order in which the sub-tasks were serially presented and performed. Consequently, a user must restart the wizard if the user wants to change any information entered for a sub-task. Alternatively, a linear wizard may be bi-directional in that the wizard enables the user to access a sub-task by proceeding through the sub-tasks in a reverse order in which the sub-tasks were presented. For example, such bi-directional linear wizard may provide a control button labeled “Back” to the user that enables the user to proceed back through preceding sub-tasks. Thus, the user may change information previously entered for a sub-task without restarting the wizard.
Some linear wizards display a sub-task list while serially presenting the sub-tasks to the user. Such a sub-task list may include a visual indication (e.g., a name or brief description) of each of the plurality of sub-tasks that are serially presented to the user. Typically, the visual indications of the sub-tasks are listed in an order in which the sub-tasks are to be serially presented and performed, thus indicating the order to the user. Some of such wizards may emphasize (e.g., highlight, underline or embolden) the visual indication in the sub-task list that represents the sub-task currently presented, e.g., in a panel, to the user. An example of a linear wizard is InstallAnywhere available from Zero G Software, Inc. of San Francisco, Calif.
A linear wizard may be more desirable than a non-linear wizard (described below) for assisting a user in navigating through a task. For example, if the task includes a plurality of sub-tasks that must be performed in a specific order or for which it is preferred that the steps are performed in a specific order, then a linear wizard may be preferred over a non-linear wizard. Another situation in which a linear wizard may be preferred is if the user performing the task (with the assistance of the wizard) is relatively inexperienced in performing the sub-task. In such a case, it may be desirable to use a linear wizard rather than a non-linear wizard because a linear wizard typically provides more navigational assistance for the user than does a non-linear wizard.
Another type of wizard is a non-linear wizard, which enables a user to control the order in which sub-tasks of a task are performed. A non-linear wizard may include a sub-task list of visual indications of sub-tasks, and enable the user to select the next sub-task to be performed by selecting the visual indication representing the sub-task from the sub-task list. Each visual indication in a sub-task list may be a hyper-link that enables the user to invoke an abstraction (e.g., a document, and object, an application) defined to implement the sub-task represented by the visual indication. Examples of non-linear wizards include the wizards provided to navigate TurboTax and Quicken, respectively, which are available from Intuit, Inc., and the letter wizard of Microsoft Word available from Microsoft Corporation.
Under some circumstances, a non-linear wizard may be more desirable than a linear wizard for assisting a user in navigating through a task. For example, if the task includes a plurality of sub-tasks that may be performed in different orders, then a non-linear wizard may be preferred over a linear wizard. Another situation in which a non-linear wizard may be preferred is if the user performing the task is relatively experienced in performing the sub-task. In such a case, it may be desirable to use a non-linear wizard rather than a linear wizard because a non-linear wizard typically provides less navigational assistance and more flexibility to the user than does a linear wizard. The experienced user may have more knowledge about the task, and thus want to proceed through the sub-tasks in an order other than an order dictated by the wizard. Further, a wizard may provide default values for one or more sub-tasks, for example, values for one or more task actions of a sub-task. A relatively inexperienced user (i.e., a novice) may still want to be directed through sub-tasks for which default values are defined, so that the novice user can learn or confirm the default values. In contrast, an experienced user may wish to skip sub-tasks for which default values are defined because the experienced user knows the default values and does not wish to change them.